package com.wanghua.spring.test.xml;

import org.dom4j.*;
/*
最令人兴奋的是DOM4J对Visitor的支持，这样可以大大缩减代码量，并且清楚易懂。了解设计模式的人都知道，Visitor是GOF设计模式之一。其主要原理就是两种类
互相保有对方的引用，并且一种作为Visitor去访问许多Visitable。我们来看DOM4J中的Visitor模式(快速文档中没有提供)只需要自定一个类实现Visitor接口即可。

VisitorSupport是DOM4J提供的默认适配器，Visitor接口的Default Adapter模式，这个模式给出了各种visit(*)的空实现，以便简化代码。
注意，这个Visitor是自动遍历所有子节点的。
* */
public class MyVisitor extends VisitorSupport {
    @Override
    public void visit(Element node) {
        System.out.println(node.getName());
    }

    @Override
    public void visit(Attribute node) {
        System.out.println(node.getName() + ":" + node.getValue());
    }



    @Override
    public void visit(Comment node) {
        super.visit(node);
    }

    @Override
    public void visit(Namespace namespace) {
        super.visit(namespace);
    }

    @Override
    public void visit(ProcessingInstruction node) {
        super.visit(node);
    }
}
